<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>基本的なインストール</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="installation.html" title="Chapter 2. インストール">
<link rel="prev" href="installation.html" title="Chapter 2. インストール">
<link rel="next" href="installing.smarty.extended.html" title="拡張セットアップ">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">基本的なインストール</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="installation.html">Prev</a> </td>
<th width="60%" align="center">Chapter 2. インストール</th>
<td width="20%" align="right"> <a accesskey="n" href="installing.smarty.extended.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="基本的なインストール">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="installing.smarty.basic"></a>基本的なインストール</h2></div></div></div>
<p>
    Smarty のライブラリファイルを、ディストリビューションの
    <code class="filename">/libs/</code> サブディレクトリにインストールしてください。
    これらの <code class="filename">.php</code> を編集してはいけません。
    これらはすべてのアプリケーションで共有するものであり、
    Smarty を新しいバージョンにアップグレードする際にのみ更新します。
   </p>
<p>以下の例で、Smarty の tarball の展開先は次のようになります。
   </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>*nix の場合は
   <code class="filename">/usr/local/lib/Smarty-v.e.r/</code>
   </p></li>
<li class="listitem"><p>Windows 環境の場合は
   <code class="filename">c:\webroot\libs\Smarty-v.e.r\</code>
   </p></li>
</ul></div>
<p>
   </p>
<div class="example">
<a name="id2747724"></a><p class="title"><b>Example 2.1. 必要な Smarty ライブラリファイル群</b></p>
<div class="example-contents"><pre class="screen">

Smarty-v.e.r/
   libs/
      Smarty.class.php
      Smarty_Compiler.class.php
      Config_File.class.php
      debug.tpl
      internals/*.php  (これら全て)
      plugins/*.php    (これら全て)

    </pre></div>
</div>
<br class="example-break"><p>
    Smarty は、<a class="link" href="smarty.constants.html#constant.smarty.dir" title="SMARTY_DIR"><code class="constant">SMARTY_DIR</code></a>
    という名前の PHP の <a class="ulink" href="http://php.net/define" target="_top">定数</a>
    を使用します。これは、Smarty の <code class="filename">libs/</code> ディレクトリへの
    <span class="bold"><strong>絶対パス</strong></span> を表します。
    基本的にあなたのアプリケーションが <code class="filename">Smarty.class.php</code>
    ファイルを見つける事が出来るなら
    <a class="link" href="smarty.constants.html#constant.smarty.dir" title="SMARTY_DIR"><code class="constant">SMARTY_DIR</code></a>
    を定義する必要はありません。Smarty は自分でそれを考えます。
    したがって、もし <code class="filename">Smarty.class.php</code> が
    <a class="ulink" href="http://php.net/ini.core.php#ini.include-path" target="_top">include_path</a>
    にないか、あなたのアプリケーションにてそれらへの絶対パスが指定されていないなら、
    手動で <code class="constant">SMARTY_DIR</code> を定義する必要があります。
    <code class="constant">SMARTY_DIR</code> は、<span class="bold"><strong>
    最後にスラッシュ / を含めなければなりません</strong></span>。
   </p>
<div class="informalexample">
<p>
    次の例では、PHP スクリプト内での Smarty インスタンスの作成方法を示します。
   </p>
<pre class="programlisting">

&lt;?php
// 注: Smarty の 'S' は大文字です
require_once('Smarty.class.php');
$smarty = new Smarty();
?&gt;

    </pre>
</div>
<p>
    上のスクリプトを実行してみてください。
    <code class="filename">Smarty.class.php</code> ファイルが見つからないというエラーが出た場合は、
    以下のいずれかを行う必要があります。
   </p>
<div class="example">
<a name="id2747865"></a><p class="title"><b>Example 2.2. 手動で SMARTY_DIR 定数を定義する</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php
// *nix スタイル (大文字の 'S' に注意)
define('SMARTY_DIR', '/usr/local/lib/Smarty-v.e.r/libs/');

// windows スタイル
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

// *nixとwindowsで共通なハックバージョンの例
// Smarty は現在のスクリプトが 'includes/' ディレクトリの下にあると仮定します。
define('SMARTY_DIR',str_replace("\\","/",getcwd()).'/includes/Smarty-v.e.r/libs/');

require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
?&gt;

    </pre></div>
</div>
<br class="example-break"><div class="example">
<a name="id2747879"></a><p class="title"><b>Example 2.3. ライブラリファイルの絶対パスを指定する</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php
// *nix スタイル (大文字の 'S' に注意)
require_once('/usr/local/lib/Smarty-v.e.r/libs/Smarty.class.php');

// windows スタイル
require_once('c:/webroot/libs/Smarty-v.e.r/libs/Smarty.class.php');

$smarty = new Smarty();
?&gt;

    </pre></div>
</div>
<br class="example-break"><div class="example">
<a name="id2747912"></a><p class="title"><b>Example 2.4. <code class="filename">php.ini</code> ファイルにライブラリへのパスを追加する</b></p>
<div class="example-contents"><pre class="programlisting">

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; *nix: "/path1:/path2"
include_path = ".:/usr/share/php:/usr/local/lib/Smarty-v.e.r/libs/"

; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;c:\webroot\libs\Smarty-v.e.r\libs\"

</pre></div>
</div>
<br class="example-break"><div class="example">
<a name="id2747941"></a><p class="title"><b>Example 2.5. PHP スクリプト内での <code class="literal"><a class="ulink" href="http://php.net/ini-set" target="_top">ini_set()</a></code>
     によるインクルードパスの追加</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php
// *nix
ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'/usr/local/lib/Smarty-v.e.r/libs/');

// windows
ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'c:/webroot/lib/Smarty-v.e.r/libs/');
?&gt;

    </pre></div>
</div>
<br class="example-break"><p>
    これでライブラリファイルは正常に設置できたので、
    今度はあなたのアプリケーション内に Smarty 用のディレクトリを セットアップしましょう。
   </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
    Smarty は、デフォルトで
    <code class="filename">templates/</code>、
    <code class="filename">templates_c/</code>、<code class="filename">configs/</code> および <code class="filename">cache/</code>
    と名づけられた４つのディレクトリが必要です。
    </p></li>
<li class="listitem"><p>これらの名前は、それぞれ
    Smarty クラスのプロパティ
    <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir">
    <code class="varname">$template_dir</code></a>、
    <a class="link" href="variable.compile.dir.html" title="$compile_dir">
    <code class="varname">$compile_dir</code></a>、
    <a class="link" href="variable.config.dir.html" title="$config_dir">
    <code class="varname">$config_dir</code></a> および
    <a class="link" href="variable.cache.dir.html" title="$cache_dir">
    <code class="varname">$cache_dir</code></a> で定義することができます。
    </p></li>
<li class="listitem"><p>
    Smarty を使用する各アプリケーションにおいて、
    これらのディレクトリを個別に設置する事を強く推奨します。
   </p></li>
</ul></div>
<p>
    インストール例として、ゲストブックアプリケーションの
    Smarty 環境をセットアップしてみます。 
    私達はディレクトリの命名規約の目的についてのみ取り上げました。
    例のアプリケーション名を <code class="literal">guestbook/</code>
    からあなたのアプリケーション名に置き換えれば、同様の環境を使用できます。 
    </p>
<div class="example">
<a name="id2748103"></a><p class="title"><b>Example 2.6. ファイル構造</b></p>
<div class="example-contents"><pre class="screen">

/usr/local/lib/Smarty-v.e.r/libs/
        Smarty.class.php
        Smarty_Compiler.class.php
        Config_File.class.php
        debug.tpl
        internals/*.php
        plugins/*.php

/web/www.example.com/
        guestbook/
                templates/
                    index.tpl
                templates_c/
                configs/
                cache/
                htdocs/
                    index.php

    </pre></div>
</div>
<br class="example-break"><p>
    あなたは web サーバのドキュメントルートの位置を知っている必要があります。
    例ではドキュメントルートは <code class="filename">/web/www.example.com/guestbook/htdocs/</code>
    とします。Smarty ディレクトリは Smarty ライブラリによってのみアクセスされ、
    web ブラウザから直接アクセスされる事はありません。
    したがってセキュリティの心配を避けるために、
    これらのディレクトリをドキュメントルートの <span class="emphasis"><em>外部</em></span>
    に配置する事を推奨します (ただし必須ではありません)。
   </p>
<p>
    ドキュメントルート下には最低１つのファイルが必要であり、
    それは web ブラウザによってアクセスされるスクリプトです。
    この例ではドキュメントルート <code class="filename">/htdocs/</code>
    の下にサブディレクトリを作成し、その中に <code class="filename">index.php</code>
    を配置します。
   </p>
<p>
    Smarty は
    <a class="link" href="variable.compile.dir.html" title="$compile_dir">
    <em class="parameter"><code>$compile_dir</code></em></a> と
    <a class="link" href="variable.cache.dir.html" title="$cache_dir">
    <em class="parameter"><code>$cache_dir</code></em></a>
    (<code class="filename">templates_c/</code> と
    <code class="filename">cache/</code>) に
    <span class="bold"><strong>書き込み権限</strong></span> でアクセスする必要があるので、
    web サーバのユーザがこれらに書き込める必要があります
    (windows ユーザはこの話を無視してください)。

    </p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Note</h3>
<p>通常は、このユーザは <span class="quote">“<span class="quote">nobody</span>”</span> でグループは
    <span class="quote">“<span class="quote">nobody</span>”</span> です。OS X ユーザの場合は、デフォルトのユーザは
    <span class="quote">“<span class="quote">www</span>”</span> でグループは <span class="quote">“<span class="quote">www</span>”</span> です。
    もし Apache を使用しているなら、<code class="filename">httpd.conf</code>
    ファイルを見ればユーザ名とグループ名がわかります。</p>
</div>
<p>
    </p>
<div class="example">
<a name="id2748415"></a><p class="title"><b>Example 2.7. パーミッションおよびディレクトリへの書き込み権限の付与</b></p>
<div class="example-contents"><pre class="programlisting">

chown nobody:nobody /web/www.example.com/guestbook/templates_c/
chmod 770 /web/www.example.com/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/guestbook/cache/
chmod 770 /web/www.example.com/guestbook/cache/

    </pre></div>
</div>
<br class="example-break"><div class="note" title="注意" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">注意</h3>
<p>
     <code class="literal">chmod 770</code> は強固なセキュリティです。
     これは、ユーザ <span class="quote">“<span class="quote">nobody</span>”</span> とグループ <span class="quote">“<span class="quote">nobody</span>”</span>
     のみにディレクトリのリード/ライトアクセスを許可します。
     もし誰にでもリードアクセスを可能にしたい場合
     (大抵はあなた自身がファイルを見るための利便性から)
     は、代わりに <code class="literal">775</code> を使う事が出来ます。
    </p>
</div>
<p>
    次に、Smarty が表示するファイル <code class="filename">index.tpl</code>
    を作成する必要があります。これは、<a class="link" href="api.variables.html#variable.template.dir" title="$template_dir">
    <em class="parameter"><code>$template_dir</code></em></a> の中に配置しなければなりません。
   </p>
<div class="example">
<a name="id2748501"></a><p class="title"><b>Example 2.8. /web/www.example.com/guestbook/templates/index.tpl</b></p>
<div class="example-contents"><pre class="screen">

{* Smarty *}

こんにちは、{$name}。ようこそ Smarty へ!

    </pre></div>
</div>
<br class="example-break"><div class="note" title="テクニカルノート" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">テクニカルノート</h3>
<p>
     <code class="literal">{* Smarty *}</code> はテンプレートの
     <a class="link" href="language.basic.syntax.html#language.syntax.comments" title="コメント">コメント</a> です。
     これは必須ではありませんが、全てのテンプレートファイルのはじめに
     コメントを書くのは良い習慣です。
     これは、ファイルの拡張子に関わらずファイルを認識する事を簡単にします。
     例えば、テキストエディタはファイルを認識して特有のシンタックスハイライトを有効にするでしょう。
    </p>
</div>
<p>
    では、<code class="filename">index.php</code> を編集しましょう。
    Smarty のインスタンスを作成し、テンプレート変数を割り当て
    (<a class="link" href="api.assign.html" title="assign()"><code class="varname">assign()</code></a>)、
    <code class="filename">index.tpl</code> ファイルを表示
    (<a class="link" href="api.display.html" title="display()"><code class="varname">display()</code></a>)
    します。
   </p>
<div class="example">
<a name="id2748580"></a><p class="title"><b>Example 2.9. /web/www.example.com/docs/guestbook/index.php の編集</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php

require_once(SMARTY_DIR . 'Smarty.class.php');

$smarty = new Smarty();

$smarty-&gt;template_dir = '/web/www.example.com/guestbook/templates/';
$smarty-&gt;compile_dir  = '/web/www.example.com/guestbook/templates_c/';
$smarty-&gt;config_dir   = '/web/www.example.com/guestbook/configs/';
$smarty-&gt;cache_dir    = '/web/www.example.com/guestbook/cache/';

$smarty-&gt;assign('name','Ned');

//** 次の行のコメントをはずすと、デバッギングコンソールを表示します
//$smarty-&gt;debugging = true;

$smarty-&gt;display('index.tpl');

?&gt;

    </pre></div>
</div>
<br class="example-break"><div class="note" title="注意" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">注意</h3>
<p>
     この例では、Smartyのディレクトリすべてを絶対パスで設定しています。
     もし <code class="filename">/web/www.example.com/guestbook/</code>
     が PHP の include_path にあるのなら、これらの設定は必要ありません。
     けれどもこれらを絶対パスで指定する方が より効率的で、(経験上)エラーが少なくなります。
     そうすれば、Smarty はあなたが意図したディレクトリからファイルを確実に取得できます。 
    </p>
</div>
<p>
    では、web ブラウザから <code class="filename">index.php</code> ファイルを読み込んでみましょう。
    <span class="emphasis"><em>"こんにちは、Ned。ようこそ Smarty へ!"</em></span> と表示されるはずです。
   </p>
<p>
    これで Smarty の基本的なセットアップは完了しました！
   </p>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="installation.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="installation.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="installing.smarty.extended.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 2. インストール </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> 拡張セットアップ</td>
</tr>
</table>
</div>
</body>
</html>
